package com.ruoyi.system.domain.project.book;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 专著对象 book
 * 
 * @author ruoyi
 * @date 2025-07-30
 */
public class Book extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 专著教材名称 */
    @Excel(name = "专著教材名称")
    private String title;

    /** 主要作者_译者 */
    @Excel(name = "主要作者_译者")
    private String mainAuthorsTranslators;
    /** 作者id */
    private Long authorId;
    /** 署名情况 */
    @Excel(name = "署名情况")
    private String signatureStatus;

    /** 出版社 */
    @Excel(name = "出版社")
    private String publisher;

    /** 出版物号r */
    @Excel(name = "出版物号r")
    private String publicationNumber;

    /** 出版_再版时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出版_再版时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publicationReprintDate;

    /** 版次 */
    @Excel(name = "版次")
    private String edition;

    /** 学术贡献及影响力 */
    @Excel(name = "学术贡献及影响力")
    private String academicContribution;

    /** 学科分类 */
    @Excel(name = "学科分类")
    private String textbookUsage;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;

    /** 附件 */
    @Excel(name = "附件")
    private String attachmentUrl;
    /** 总字数 */
    private String totalWord;
    /** 我的字数 */
    private String myWord;
    /** 教材类型 */
    private String bookType;
    /** 地点 */
    private String location;

    /** 开始时间 */
    private Date beginTime;
    /** 结束时间 */
    private Date endTime;
    /** 排序 */
    private Long rank;
    /**
     * 搜索条件
     */
    private Long deptId;
    // 当前用户角色
    private String currentRole;

    private List<BookTeacher> teachers;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }

    public void setMainAuthorsTranslators(String mainAuthorsTranslators) 
    {
        this.mainAuthorsTranslators = mainAuthorsTranslators;
    }

    public String getMainAuthorsTranslators() 
    {
        return mainAuthorsTranslators;
    }

    public void setSignatureStatus(String signatureStatus) 
    {
        this.signatureStatus = signatureStatus;
    }

    public String getSignatureStatus() 
    {
        return signatureStatus;
    }

    public void setPublisher(String publisher) 
    {
        this.publisher = publisher;
    }

    public String getPublisher() 
    {
        return publisher;
    }

    public void setPublicationNumber(String publicationNumber) 
    {
        this.publicationNumber = publicationNumber;
    }

    public String getPublicationNumber() 
    {
        return publicationNumber;
    }

    public void setPublicationReprintDate(Date publicationReprintDate) 
    {
        this.publicationReprintDate = publicationReprintDate;
    }

    public Date getPublicationReprintDate() 
    {
        return publicationReprintDate;
    }

    public void setEdition(String edition) 
    {
        this.edition = edition;
    }

    public String getEdition() 
    {
        return edition;
    }

    public void setAcademicContribution(String academicContribution) 
    {
        this.academicContribution = academicContribution;
    }

    public String getAcademicContribution() 
    {
        return academicContribution;
    }

    public void setTextbookUsage(String textbookUsage) 
    {
        this.textbookUsage = textbookUsage;
    }

    public String getTextbookUsage() 
    {
        return textbookUsage;
    }

    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }

    public void setAttachmentUrl(String attachmentUrl) 
    {
        this.attachmentUrl = attachmentUrl;
    }

    public String getAttachmentUrl() 
    {
        return attachmentUrl;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("title", getTitle())
            .append("mainAuthorsTranslators", getMainAuthorsTranslators())
            .append("signatureStatus", getSignatureStatus())
            .append("publisher", getPublisher())
            .append("publicationNumber", getPublicationNumber())
            .append("publicationReprintDate", getPublicationReprintDate())
            .append("edition", getEdition())
            .append("academicContribution", getAcademicContribution())
            .append("textbookUsage", getTextbookUsage())
            .append("remarks", getRemarks())
            .append("attachmentUrl", getAttachmentUrl())
            .toString();
    }

    public Long getAuthorId() {
        return authorId;
    }

    public void setAuthorId(Long authorId) {
        this.authorId = authorId;
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getCurrentRole() {
        return currentRole;
    }

    public void setCurrentRole(String currentRole) {
        this.currentRole = currentRole;
    }

    public List<BookTeacher> getTeachers() {
        return teachers;
    }

    public void setTeachers(List<BookTeacher> teachers) {
        this.teachers = teachers;
    }

    public Long getRank() {
        return rank;
    }

    public void setRank(Long rank) {
        this.rank = rank;
    }

    public String getTotalWord() {
        return totalWord;
    }

    public void setTotalWord(String totalWord) {
        this.totalWord = totalWord;
    }

    public String getMyWord() {
        return myWord;
    }

    public void setMyWord(String myWord) {
        this.myWord = myWord;
    }

    public String getBookType() {
        return bookType;
    }

    public void setBookType(String bookType) {
        this.bookType = bookType;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }
}
